package com.yc.springmvc.controller;

import org.springframework.core.convert.converter.Converter;

import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;

public class SqlDateConvertor implements Converter<String, Date> {
    SimpleDateFormat YYYYMMDD1 = new SimpleDateFormat("yyyy-MM-dd");
    SimpleDateFormat YYYYMMDD2 = new SimpleDateFormat("yyyy/MM/dd");
    SimpleDateFormat YYYYMMDD3 = new SimpleDateFormat("yyyy年MM月dd日");

    @Override
    public Date convert(String s) {
        // yyyy-MM-dd HH:mm:ss, yyyy/MM/dd,  yyyy年MM月dd日
        if(s.matches("\\d{4}-\\d{2}-\\d{2}.*")){
            s = s.substring(0,10);
            return parse(s, YYYYMMDD1);
        }
        if(s.matches("\\d{4}/\\d{2}/\\d{2}.*")){
            s = s.substring(0,10);
            return parse(s, YYYYMMDD2);
        }
        if(s.matches("\\d{4}年\\d{2}月\\d{2}日.*")){
            s = s.substring(0,11);
            return parse(s, YYYYMMDD3);
        }
        // 其他格式类型请自行扩展
        // return null;
        throw new UnsupportedOperationException("不支持的日期格式:" + s);
    }

    private Date parse(String s, SimpleDateFormat sdf){
        try {
            java.util.Date date = YYYYMMDD1.parse(s);
            return new Date(date.getTime());
        } catch (ParseException e) {
            throw new RuntimeException("日期格式错误!",e);
        }
    }
}
